const POINT_STYLE = {
  Angle: 0,
  Color: 31, //子图的颜色
  Space: 0,
  SymHeight: 5, //子图的高度
  SymID: 31, //子图号
  SymWidth: 5, //子图的宽度
};
/**
 * @param {array} position  添加点要素的位置
 * @param {array} attr [{key:"name",type:"string",value:"武汉"}]
 * @param {object} service {docName,layerId} docName地图文档的名称 layerID 要素所在的图层
 * @param {object} docLayer //实例化的地图文档图层
 */
function addPoint({ position, attr, service,docLayer}) {
  /* 1、设置点要素 */
  /* 几何 */
  var gpoint = new Zondy.Object.GPoint(position[0], position[1]);
  var fGeom = new Zondy.Object.FeatureGeometry({ PntGeom: [gpoint] });
  /* 样式 */
  var pointInfo = new Zondy.Object.CPointInfo(POINT_STYLE);
  var webGraphicInfo = new Zondy.Object.WebGraphicsInfo({
    // type:1(Point)|2(Line)|3(Area)
    InfoType: 1,
    PntInfo: pointInfo,
  });
  /* 属性 */
  /* 1-3、属性信息 */
  var attValue = attr.map((item) => item.value);
  // 构建点要素
  //创建一个要素
  var feature = new Zondy.Object.Feature({
    fGeom: fGeom,
    GraphicInfo: webGraphicInfo,
    AttValue: attValue,
  });
  //设置要素为点要素 1|2|3
  feature.setFType(1);
  /* 2、设置[要素集]添加要素 */
  var featureSet = new Zondy.Object.FeatureSet();
  //设置属性结构
  var cAttStruct = new Zondy.Object.CAttStruct({
    FldName: attr.map((item) => item.key),
    FldNumber: attr.length,
    FldType: attr.map((item) => item.type),
  });
  featureSet.AttStruct = cAttStruct;
  //添加要素到要素数据集
  featureSet.addFeature(feature);
  /* 3、调用中地服务添加要素 */
  //创建一个编辑服务类
  /* 
    第一个参数是地图文档的名称
    第二个参数是要素所在的图层
     */
  var editService = new Zondy.Service.EditDocFeature(
    service.docName,
    service.layerId,
    {
      ip: "localhost",
      port: "6163",
    }
  );
  //执行添加点要素功能
  editService.add(featureSet, onPntSuccess(docLayer));
}
//添加点要素回调函数
function onPntSuccess(docLayer) {
  return function (data) {
    if (data.succeed) {
      alert("添加点要素成功！");
      docLayer.refresh();
    } else {
      alert("添加点要素失败！");
    }
  };
}
